package org.actbuilder.platform.util;


import java.sql.Types;

public class DbUtil {

    /** 预定义的SQL类型和名称对照表 */
    public static final Object[][] sqlTypes = { { "BIT", Types.BIT },
            { "TINYINT", Types.TINYINT }, { "SMALLINT", Types.SMALLINT },
            { "INTEGER", Types.INTEGER }, { "BIGINT", Types.BIGINT },
            { "FLOAT", Types.FLOAT }, { "REAL", Types.REAL },
            { "DOUBLE", Types.DOUBLE }, { "NUMERIC", Types.NUMERIC },
            { "DECIMAL", Types.DECIMAL }, { "CHAR", Types.CHAR },
            { "VARCHAR", Types.VARCHAR }, { "LONGVARCHAR", Types.LONGVARCHAR },
            { "DATE", Types.DATE }, { "TIME", Types.TIME },
            { "TIMESTAMP", Types.TIMESTAMP }, { "BINARY", Types.BINARY },
            { "VARBINARY", Types.VARBINARY },
            { "LONGVARBINARY", Types.LONGVARBINARY }, { "NULL", Types.NULL },
            { "OTHER", Types.OTHER }, { "JAVA_OBJECT", Types.JAVA_OBJECT },
            { "DISTINCT", Types.DISTINCT }, { "STRUCT", Types.STRUCT },
            { "ARRAY", Types.ARRAY }, { "BLOB", Types.BLOB },
            { "CLOB", Types.CLOB }, { "REF", Types.REF },
            { "DATALINK", Types.DATALINK }, { "BOOLEAN", Types.BOOLEAN },
            { "ROWID", Types.ROWID }, { "NCHAR", Types.NCHAR },
            { "NVARCHAR", Types.NVARCHAR },
            { "LONGNVARCHAR", Types.LONGNVARCHAR }, { "NCLOB", Types.NCLOB },
            { "SQLXML", Types.SQLXML } };

    /**
     * 根据字段类型编号获得字段类型名称。如果没有找到名称直接返回type。
     * @param type 字段类型编号。
     * @return 字段类型名称。
     */
    public static String getTypeName(int type) {
        int i, j = sqlTypes.length;

        switch (type) {
            case Types.CHAR:
            case Types.NCHAR:
            case Types.VARCHAR:
            case Types.NVARCHAR:
                return null;
        }
        for (i = 0; i < j; i++)
            if (type == (Integer) sqlTypes[i][1])
                return ((String) (sqlTypes[i][0])).toLowerCase();
        return Integer.toString(type);
    }
}
